\chapter{Rešerše}
\label{chap:research}
\newcommand{\eliza}{ELIZA}
\hyphenation{SHRDLU}
\newcommand{\shrdlu}{SHRDLU}

První systémy, které umožňovaly rozhovory s počítačem nebo ovládání softwaru
pomocí přirozeného jazyka, začaly vznikat v 60. letech 20. století. Na~začátku
se jednalo o jednoduché dialogové systémy (např. \eliza \cite{weizenbaum010}), které nedisponovaly
žádnými znalostmi a jejich fungování bylo založeno čistě na formálních lingvistických
transformacích. Postupem času vznikaly stále komplikovanější systémy, které
umožňovaly např. ovládání robota (byť jen virtuálního, jako např. \shrdlu{} \cite{winogram010})
a~dotazování pomocí přirozeného jazyka. Stále se však ještě nejednalo o použitelné v praxi systémy. 

S rozvojem vědy a
techniky vznikly nástroje, které kromě vědeckého uplatnění našly i uplatnění praktické. Jednalo se např. o
systémy vyhledávání informací v přirozených jazycích (např. Wolfram$|$Alpha). Díky
pokroku v~oblasti generování a rozpoznávání mluvené řeči se otevřely nové
možnosti ovládání softwaru a zařízení. Vznikají nástroje, které umožňují zrakově
pos\-ti\-že\-ným uživatelům pracovat s počítačem nebo prostě ovládat software
pomocí hlasových příkazů (Opera, MS Windows, Mac OS X). Hlasovými příkazy
v přirozených jazycích lze ale ovládat nejen software na osobních počítačích.
Hlasové ovládání se uplatňuje např. v částečně automatizovaných call centrech
a~dokonce i v moderních stíhacích letounech.

V této kapitole na základě nejdůležitějších a nejzajímavějších projektů
struč\-ně popisujeme dějiny a současný stav výzkumu v oblasti použití
přirozeného jazyka pro ovládání softwaru a robotů.

\section{První systémy}
\subsection*{\eliza}
\eliza{} byla jedním z prvních dialogových systémů, které umožňují konverzaci
člověka s počítačem. Program simuluje psychoanalytika při rozhovoru s~pacientem
(uživatelem). 

{\eliza} neobsahuje žádnou komponentu, která odpovídá za sémantickou analýzu, a nesnaží se žádným způsobem porozumět
rozhovoru \protect\cite{weizenbaum010}. Odpovědi programu jsou generovány pomocí \textit{transformací} vět zadaných
uživatelem. {\eliza} v zadané větě vyhledává \textit{klíčová slova}, z nichž
nejdůležitější vybírá a na základě těchto klíčových slov a
transformačních pravidel vytváří odpověď. Program si věty zadané
uživatelem ukládá do paměti. Pokud uživatel zadá větu, která neobsahuje
klíčové slovo nebo se na ni nedá použít žádné transformační pravidlo, {\eliza}
se buď vrátí k jednomu z předchozích témat (to může udělat, protože si vstupy ukládá),
nebo položí nějakou obecnou otázku (např. \textit{In what way?}).
Příklad \ref{eliza_example} znázorňuje, jak probíhá skutečný
\textit{rozhovor} uživatele s~Elizou.

\inclst{eliza_01}

\subsection*{\shrdlu}
{\shrdlu} je systém, který pomocí příkazů v přirozeném jazyce umožňuje ovládat virtuálního robota. Vznikl v letech
1968--1970 v rámci disertace Terryho Winograda na MIT  \protect\cite{winogram010}. Winogradovým cílem bylo vytvoření
programu, který, na rozdíl od systému \eliza, dokáže přirozenému jazyku skutečně porozumět. {\shrdlu} umožňuje
\textit{rozhovor} v anglickém jazyce s~virtuálním robotem, který manipuluje s kostkami ze
stavebnicemi různých barev, velikostí a tvarů. {\shrdlu} disponuje bází
znalostí, kam ukládá pozice jednotlivých dílků stavebnice. Ta obsahuje rovněž základní fyzikální zákony (žádný dílek
nemůže viset ve vzduchu, jehlan lze položit na krychli, ale naopak nikoli atp.). Na základě příkazů v angličtině
{\shrdlu} svou bázi znalostí modifikuje. Kromě toho umí odpovídat na otázky týkající se aktuální situace ve svém okolí.
Příklad \ref{ex:shrdlu} ukazuje záznam skutečného \textit{rozhovoru} mezi programem a uživatelem.

\inclst{shrdlu_01}

\section{Vyhledávání informací}

Vyhledávání v přirozeném jazyce, na rozdíl od klasického vyhledávání
pomocí klíčových slov (jaké používá mj. populární internetový
vyhledávač Google), umožňuje nacházení odpovědí na konkrétní otázky místo
stránek, na~kte\-rých se prostě zadaná slova vyskytují. Díky tomu taky mohou najít požadované informace např. osoby,
které kvůli nedostatku zkušeností s moderní výpočetní technikou nebo třeba psychické poruše nejsou schopny sestavit
správný dotaz.

\newcommand{\wa}{Wolfram$|$Alpha}
\subsection*{\wa}

{\wa} umožňuje vyhledávání konkrétních informací na základě nestrukturovaných
dotazů v angličtině (jiné jazyky nejsou zatím podporovány). Dlouhodobým cílem
projektu je zpřístupnit všechny znalosti na jednom místě\cite{wolfram010} a~umožnit dotazování v přirozeném jazyce. Několik příkladů skutečných dotazů a
odpovědí na ně ukazuje tabulka \ref{tab:wolfram_01}.

\shorthandoff{-}
\newcommand{\lw}{4.5cm}
\newcommand{\rw}{8.7cm}
\begin{table}[h!]
\begin{tabular}{|m{\lw}|m{\rw}|}
\hline
Dotaz & Výsledek \\ \hline \hline
\textit{warsaw prague} & Porovnání obou měst (počet o\-by\-va\-tel, plocha,
časový rozdíl, počasí, nad\-moř\-ská výška), vzdá\-lenost a délka letu mezi
městy \\ \hline \textit{distance between warsaw and prague} &
\multirow{2}{*}{\begin{minipage}{\rw}Vzdálenost mezi městy v různých
jed\-not\-kách, dél\-ka letu v rychlosti průměrného dopravního le\-tadla, v
rychlosti zvuku a světla.\end{minipage}} \\ \cline{1-1}
\textit{distance from warsaw to prague} & \\ \hline
\textit{how long does it take to get from warsaw to prague} & Podobný výsledek
jako výše, akorát na prv\-ním místě je čas. \\ \hline
\textit{who was born in warsaw} & Seznam známých lidí narozených ve Varšavě. \\
\hline
\textit{who was president after masaryk} & Informace o prezidentu
Václavu Klausovi. Vyhledávač nicméně upozorní uživatele na to, že
ne\-po\-ro\-zuměl vstupu a odpověď generuje na zák\-ladě své nejbližší
interpretace: \textit{president}. \\
\hline
\end{tabular}
\caption{Wolfram$|$Alpha -- příklady dotazů a popisy odpovědí na ně.}
\label{tab:wolfram_01}
\end{table}
\shorthandon{-}

\section{Ovládání softwaru}

\subsection*{Windows Speech Recognition}

Modul pro rozpoznávání mluvené řeči (\textit{Windows Speech Recognition}) je
součástí desktopových operačních systémů Microsoft Windows od verze XP. V
systému Microsoft Windows 7 je v současné době dostupný pro angličtinu,
francouzštinu, španělštinu, němčinu, japonštinu a čínštinu. Podle informací na
oficiálních we\-bo\-vých stránkách Microsoftu \cite{msspeechrec001} modul
umožňuje ve výše zmíněných jazycích diktovat text a také ovládat software na základní úrovni, např. spustit program,
kliknout na vybraný prvek, scrollovat, simulovat stisknutí tlačítka na klávesnici atp.
%TODO Kiedy� wyszukiwa�am dla Ciebie przyk�ady tych polece� g�osowych i domniemanego dzia�ania Windowsa i Opery. Nie chcesz tego tutaj? (Do znalezienia przez archiwum czat�w).
\subsection*{Opera}

Internetový prohlížeč Opera od verze 8.0 (viz \cite{operachangeswindows800}) umožňuje ovládání hlasem, které
je oficiálně dostupné pouze pod operačními systémy {\wintt} a {\winxp} a funguje jen v angličtině.

\newcommand{\ub}{Ubiquity}
\subsection*{\ub}

{\ub} je doplněk pro internetový prohlížeč Firefox. Byl vyvíjen v rámci Mozilla
Labs v letech 2008--2009. Cílem tohoto projektu bylo podle \cite{ubiquity010} zjištění,
zda použití příkazového řádku, který dokáže zpracovávat příkazy v přirozeném
jazyce, může zrychlit a zjednodušit prohlížení internetových stránek. Zkoumají
se dvě hlavní oblasti:
\begin{description}
	\item[lingvistická rozhraní] \textit{Linguistic interfaces.} Může být v praxi použitelné rozhraní, kam uživatel napíše,
	co chce provést? Lze ho naprogramovat pro jiné jazyky než angličtinu?
	\item[slovesa na webu] \textit{Verbifying the Web.}  Velké množství
	stránek na Internetu zpřístupňuje uživatelům \textit{služby}, pomocí kterých
	lze např. překládat, vyhledávat informace, přidávat příspěvky na fóra atp.
	{\ub} umožňuje zacházet s~takovými stránkami jako s nástroji, které lze volat
	pomocí \textit{sloves}. Lze tyto služby používat nikoli jako obyčejné
	webové stránky, nýbrž jako nástroje ovládané pomocí obecného lingvistického rozhraní?
\end{description}

%\newcommand{\vo}{VoiceOver}
%\subsection*{\vo}

\newcommand{\as}{AppleScript}
\subsection*{\as}
%TODO �r�d�o!
{\as} je objektově orientovaný skriptovací jazyk, podporovaný mnoha
aplikacemi pod operačním systémem \macosx \cite{appledeveloper}. Jeho syntaxe má svůj základ v přirozeném jazyce
(angličtině) a je na základní úrovni snadno čitelná i pro~oso\-by, které v tomto jazyce nikdy neprogramovaly. Příklad
\ref{applescript_example_01} obsahuje ukázku zdrojového kódu v jazyce \as.

\inclst{as_01}

Programovací jazyk {\as} obsahuje mnoho rysů, díky kterým jsou skripty velmi
podobné textům v přírozeném jazyce (angličtině). Níže uvádíme některé z nich.
\begin{enumerate}
	\item Klíčové slovo \lstinline!the!. Je nepovinné a bylo
	zavedeno jen proto, aby se skript více podobal textu v přirozeném jazyce.
	Následující příkazy:
	\begin{itemize}
		\item \lstinline!version of application "Finder"!
		\item \lstinline!the version of the application "Finder"!
	\end{itemize}
	jsou si ekvivalentní.
	\item Klíčová slova \lstinline!of! a \lstinline!in!. Slouží pro přístup k objektům a
	vlastnostem kontejnerů a v tomto kontextu jsou si rovnocenné (programátor si
	může mezi nimi vybrat podle vlastního uvážení, ve většině případů bude zvolena
	varianta, která se více hodí z hlediska přirozeného jazyka). Lze tedy napsat:
	\begin{itemize}
		\item \lstinline!the version of the application "Finder"! nebo
		\item \lstinline!the version in the application "Finder"!
	\end{itemize}
	Přestože programátor zřejmě zvolí první variantu, výsledek volání obou příkazů
	bude stejný.
	\item Přípona \lstinline!'s!. Může být použita místo klíčového slova \lstinline!of!
	nebo \lstinline!in! pro přístup k objektům nebo vlastnostem kontejnerů. Např.
	následující příkazy:
	\begin{itemize}
		\item \lstinline!the name of the first item of the first disk!
		\item \lstinline!first disk's first item's name!
		\item \lstinline!first item's name of the first disk!
	\end{itemize}
		jsou si rovnocenné a je věcí programátora, kterou variantu zvolí. Je-li tento příkaz adresován aplikaci
		\textit{Finder}, všechny výše uvedené varianty vrátí název prvního objektu (složky nebo souboru) na prvním disku v
		počítači.
	\item Zájmena \lstinline!me!, \lstinline!my!, \lstinline!it! a \lstinline!its!. Klíčové
	slovo \lstinline!me! odkazuje na právě spuštěný skript, \lstinline!it! na výchozí cíl volání.
\end{enumerate}

\section{Ovládání přístrojů}

\subsection*{Mobilní telefony}

Některé mobilní telefony (např. Nokia E52, Sony Ericsson K800i)  umožňují kromě dotykového ovládání na základní úrovni
i ovládání hlasové (např. výběr telefonního čísla, odeslání SMS zprávy, příjem hovoru). Je určeno hlavně pro použití s
handsfree sadami do auta a podle výrobců zvyšuje bezpečnost, když řidič telefonuje za jízdy.

\subsection*{Stíhací letouny}

Některé moderní stíhací letouny umožňují pilotům ovládat hlasem vybrané přístroje, takže se pilot může plně
soustředit na řízení letadla. Např. stíhací letouny Eurofighter Typhoon disponují DVI (\textit{Direct Voice Input})
modulem\cite{eurofighter001}. Pomocí DVI lze hlasovými příkazy zadávat parametry letu či ovládat někte\-ré palubní
systémy. Nejedná se nicméně o prvky kritické z hlediska bezpečnosti letadla. Hlasem lze ovládat mj.:
\begin{itemize}
  \item nastavení displejů a výběr položek, které mají na nich být zobrazeny
  \item výběr požadovaného rádiového kanálu
  \item nastavení trasy
  \item výběr cíle útoku
  \item přiřazování cílů útoku jednotlivým letadlům v skupině
\end{itemize}

\subsection*{\nab}

Ovládání pomocí přirozeného jazyka umožňuje i robotický králík {\nab} (stejně jako jeho předchůdce, Nabaztag, a
následník, Karrotz). Robotovi {\nab} věnujeme celou kapitolu \ref{chap:nabaztag}.
